﻿#define  _CRT_SECURE_NO_WARNINGS 1
//1.自定义函数，实现字符串连接，题目要求将第二个字符串连接到第一个字符串后面。例如：
//第一个字符串为“hello world”，第二个字符串为“welcome to china”，拼接后的结果为“hello
//worldwelcome to china”。
//#include<stdio.h>
//void connect(char* p1, char* p2);
//
//int main()
//{
//	char str1[80], str2[80];
//	gets(str1);
//	gets(str2);
//	connect(str1, str2);
//	printf("拼接后的字符串: %s\n", str1);
//	return 0;
//}
//// 自定义的字符串连接函数，将p2指向的字符串连接到p1指向的字符串末尾
//// 假设怕指向的字符数组有足够空间容纳拼接的结果
//void connect(char* p1, char* p2)
//{
//	// 找到p1字符串的末尾（\0 的位置）
//	while (*p1 != '\0')
//	{
//		p1++;
//	}
//	// 将p2字符串的内容逐个复制到p1末尾
//	while (*p2 != '\0')
//	{
//		*p1 = *p2;
//		p1++;
//		p2++;
//	}
//	// 拼接后的字符串末尾加上结束符
//	*p1 = '\0';
//}







//2. 输入三个整数 x、y、z，请把这三个数由小到大输出。
#include <stdio.h>
//int main()
//{
//	// 定义变量
//	int x = 0;
//	int y = 0;
//	int z = 0;
//	int temp = 0; // 临时变量
//	// 输入三个整数
//	scanf("%d %d %d", &x, &y, &z);
//	// 第一步：确保x是三个数中最小的（若x大于y，则交换x和y）
//	if (x > y)
//	{
//	temp = x;
//	x = y;
//	y = temp;
//	}
//	// 第二步：此时x已小于等于y，确保y是三个数的中中间的（若y大于z，则交换y和z）
//	if (y > z)
//	{
//		temp = y;
//		y = z;
//		z = temp;
//	}
//	// 第三步：经过前面两步，z已经是最大的了，但需要再次确定x小于等于y（避免交换y和z后x大于y）
//	if (x > y)
//	{
//		temp = x;
//		x = y;
//		y = temp;
//	}
//	// 输出
//	printf("排序后从小到大: %d %d %d", x, y, z);
//	return 0;
//}



//3.一球从 100 米高度自由落下，每次落地后反跳回原高度的一半；再落下，求它在第 10 次
//落地时，共经过多少米？第 10 次反弹多高？
int main()
{
	// 初始高度100米
	double height = 100.0;
	// 总距离（第一次落地前已下落100米，先初始化）
	double total_distance = height;
	// 反弹次数  （从第一次反弹开始算）
	int times;

	// 循环计算第二次到第十次落地的（共9次反弹和下落）
	for (int times = 1; times <= 9; times++)
	{
		// 每次反弹高度是上次高度的一半
		height /= 2 ;
		// 反弹后会再次下落相同的高度，所以每次反弹+下落的距离是2倍反弹高度
		total_distance += 2 * height;
	}
	printf("第十次落地是总共经过%.2f米\n", total_distance);
	// 第十次落地后的反弹高度，是第九次循环计算的height，
	// 因为第10次落地对应第九次反弹后下落
	printf("第十次反弹高度为%.6f米", height/2);
	return 0;
}